package com.lqq.designPattern.bulider_pattern.singleton.demo7;

import java.io.*;

/**
 * 序列化反序列化破坏单例模式（除了枚举不能破坏）
 */
public class Client {
    public static void main(String[] args) throws Exception{

        //writeObject2File();

        //调用两次发现这两个对象不是同一个对象
        readObjectFromFile();//创建者模式.单例模式.demo7.Singleton@4dd8dc3
        readObjectFromFile();//创建者模式.单例模式.demo7.Singleton@6d03e736
    }

    //从文件读取数据（对象）
    public static void readObjectFromFile() throws Exception {
        //创建对象输入流对象
        ObjectInputStream ois = new ObjectInputStream(new FileInputStream("C:\\Users\\87199\\Desktop\\a.txt"));
        //读取对象
        Singleton instance = (Singleton) ois.readObject();
        System.out.println(instance);
        //关闭流
        ois.close();
    }

    //向文件写数据（对象）
    public static void writeObject2File() throws Exception {
        //创建单例模式对象
        Singleton instance = Singleton.getInstance();
        //创建对象输出流对象
        ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("C:\\Users\\87199\\Desktop\\a.txt"));
        //向输出流对象写入对象
        oos.writeObject(instance);
        //关闭流
        oos.close();
    }
}
